package com.interview.utils;

import java.util.Collection;
import java.util.Iterator;
import java.util.Map;

/**
 *
 * @author biehl
 *
 * @date 2018年7月31日下午2:40:40
 *
 * @Notes 判断是否为空的工具栏，如果不使用StringUtils的jdk的工具类，可以自行封装
 *
 */
public class NullUtils {


    /**
     * 判断字符串不为空  不为空 返回true
     * @param str
     * @return
     */
    public static boolean notEmpty(String str){
        return str != null && !"".equals(str.trim())&&!"[]".equals(str)&&!"{}".equals(str);
    }



    /**
     * 判断字符串为空  为空返回 true
     * @param str
     * @return
     */
    public static boolean isEmpty(String str){
        return str == null || str.length() == 0||"".equals(str.trim());
    }




    /**
     * 单例集合  判断是否为空  不为空 返回true
     * @param collection 使用泛型
     * @return
     */
    public static <T> boolean notEmpty(Collection<T> collection){
        if(collection != null){
            Iterator<T> iterator = collection.iterator();
            if(iterator != null){
                while(iterator.hasNext()){
                    Object next = iterator.next();
                    if(next != null){
                        return true;
                    }
                }
            }
        }
        return false;
    }



    /**
     * map集合判断是否为空  不为空 返回true
     * @param map 使用泛型，可以传递不同的类型参数
     * @return
     */
    public static <T> boolean notEmpty(Map<T, T> map){
        return map != null && !map.isEmpty();
    }


    /**
     * byte类型数组判断是否为空  不为空 返回true
     * @param t
     * @return
     */
    public static boolean notEmpty(byte[] t){
        return t != null && t.length > 0;
    }

    /**
     * short类型数组 判断是否为空  不为空 返回true
     * @param t
     * @return
     */
    public static boolean notEmpty(short[] t){
        return t != null && t.length > 0;
    }

    /**
     * int类型数组  判断是否为空  不为空 返回true
     * @param t 可以是int,
     * @return
     */
    public static boolean notEmpty(int[] t){
        return t != null && t.length > 0;
    }

    /**
     * long类型数组  判断是否为空 不为空 返回true
     * @param t
     * @return
     */
    public static boolean notEmpty(long[] t){
        return t != null && t.length > 0;
    }

    /**
     * String类型的数组 判断是否为空 不为空 返回true
     * @param t
     * @return
     */
    public static boolean notEmpty(String[] t){
        return t != null && t.length > 0;
    }

    /**
     * Object类型数组 判断是否为空 不为空 返回true
     * @param t
     * @return
     */
    public static boolean notEmpty(Object[] t){
        return t != null && t.length > 0;
    }

    /**
     *   Object类型 判断是否为空 不为空 返回true
     * @param o
     * @return
     */
    public static boolean notEmpty(Object o){
        return o != null && !"".equals(o) && !"null".equals(o);
    }



}